package a.f.d.a;

import a.c.ab;
import a.c.bb;
import a.c.e;
import a.c.i;
import a.c.k;
import a.c.v;
import a.c.x;
import a.c.z;
import a.f.cd;
import a.f.o;
import a.i.a.n;

import java.util.*;

class dd
{
  private x a;
  private bb[] b;
  private o c;
  private int d;
  private n e;
  private int f;
  private ac h;
  private bc i;
  private db.g_ j;
  private k k;
  private d_[][] l;
  private rb m;
  private boolean n;
  
  public void a(o paramo, ac paramac, bc parambc, rb paramrb, List paramList, k paramk)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    if (((!bool2) && (paramList == null)) || (paramList.size() < 1)) {
      return;
    }
    if (!bool2)
    {
      if (paramo == null) {
        throw new NullPointerException();
      }
      this.h = paramac;
      this.k = paramk;
      this.m = paramrb;
      this.c = paramo;
      this.d = paramac.a();
      this.i = parambc;
      this.n = true;
      this.a = paramo.B();
    }
    x localx = paramo.B();
    this.j = new db.g_(localx, localx, 0);
    try
    {
      b_ localb_ = new b_();
      this.e = new n(paramo.j() + this.d, localb_, localb_);
      this.f = 1;
      a();
      HashMap localHashMap = new HashMap();
      int i1 = 0;
      int i2 = 0;
      int i3 = paramList.size() - 1;
      if (i3 >= 0) {}
      label258:
      label263:
      while (bool2)
      {
        localObject1 = paramList.get(i3);
        if (!bool2) {
          if ((localObject1 instanceof e))
          {
            localHashMap.put(localObject1, null);
            i2++;
            if (bool2) {
              break label263;
            }
            if (!bool1) {
              break label258;
            }
          }
        }
        if (!bool2)
        {
          if ((localObject1 instanceof a.c.d)) {
            i1++;
          }
          i3--;
        }
        if (!bool1) {
          break;
        }
      }
      ArrayList localArrayList = new ArrayList(i1);
      Object localObject1 = new ArrayList(i2);
      int i4 = paramList.size() - 1;
      Object localObject2;
      Object localObject3;
      label648:
      do
      {
        if (i4 < 0) {
          break;
        }
        localObject2 = paramList.get(i4);
        if (bool1) {
          break label662;
        }
        if ((localObject2 instanceof e))
        {
          if (!bool2)
          {
            if (!localHashMap.containsKey(localObject2))
            {
              a((e)localObject2, Collections.EMPTY_LIST, 1);
              if (bool2) {
                continue;
              }
              if (!bool1) {}
            }
            else
            {
              ((List)localObject1).add(localObject2);
            }
          }
          else
          {
            if (bool2) {
              continue;
            }
            if (!bool1) {}
          }
        }
        else if ((bool2) || ((localObject2 instanceof a.c.d)))
        {
          localObject3 = (a.c.d)localObject2;
          Object localObject4;
          if (!bool2) {
            if (localHashMap.containsKey(((a.c.d)localObject3).e()))
            {
              localObject4 = (List)localHashMap.get(((a.c.d)localObject3).e());
              if (!bool2) {
                if (localObject4 == null)
                {
                  localObject4 = new ArrayList();
                  localHashMap.put(((a.c.d)localObject3).e(), localObject4);
                }
              }
              ((List)localObject4).add(localObject3);
              if (bool2) {
                continue;
              }
              if (!bool1) {
                break label648;
              }
            }
          }
          if (!bool2)
          {
            if (localHashMap.containsKey(((a.c.d)localObject3).f()))
            {
              localObject4 = (List)localHashMap.get(((a.c.d)localObject3).f());
              if (!bool2) {
                if (localObject4 == null)
                {
                  localObject4 = new ArrayList();
                  localHashMap.put(((a.c.d)localObject3).f(), localObject4);
                }
              }
              ((List)localObject4).add(localObject3);
              if (bool2) {
                continue;
              }
              if (!bool1) {}
            }
            else
            {
              localArrayList.add(localObject3);
            }
          }
          else
          {
            if (bool2) {
              continue;
            }
            if (!bool1) {}
          }
        }
        else
        {
          throw new IllegalArgumentException("Don't know how to insert " + localObject2 + " incrementally!");
        }
        i4--;
      } while (!bool1);
      if (!bool2) {
        label662:
        i4 = 0;
      }
      do
      {
        do
        {
          if (i4 >= ((List)localObject1).size()) {
            break;
          }
          localObject2 = (e)((List)localObject1).get(i4);
          localObject3 = (List)localHashMap.get(localObject2);
          a((e)localObject2, (List)localObject3, 0, this.d - 1);
          i4++;
          if (bool2) {
            break label747;
          }
          if (bool1) {
            break label745;
          }
        } while (!bool1);
      } while (bool2);
      i4 = 0;
      label745:
      label747:
      do
      {
        do
        {
          if (i4 >= localArrayList.size()) {
            break;
          }
          localObject2 = (a.c.d)localArrayList.get(i4);
          a((a.c.d)localObject2);
          i4++;
          if (bool2) {
            break label805;
          }
          if (bool1) {
            break label803;
          }
        } while (!bool1);
      } while (bool2);
      i4 = 0;
      label803:
      label805:
      do
      {
        while (!bool1)
        {
          if (i4 >= paramac.a()) {
            break;
          }
          paramac.a(i4).a(this.b[i4]);
          i4++;
        }
      } while (bool2);
    }
    finally
    {
      paramo.a(this.a);
      paramo.a(localx);
      this.j = null;
      this.b = null;
      this.e = null;
      this.k = null;
      this.i = null;
      this.c = null;
      this.h = null;
      this.m = null;
      this.j = null;
      this.a = null;
      this.l = ((d_[][])null);
    }
  }
  
  private void a()
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    this.b = new bb[this.h.a()];
    this.l = new d_[this.d][];
    int i1 = 0;
    int i2;
    label167:
    label169:
    do
    {
      do
      {
        if (i1 >= this.b.length) {
          break;
        }
        this.b[i1] = new bb(this.h.a(i1).c().l());
        i2 = 0;
        if (bool2) {
          break label211;
        }
        if (bool1) {
          break label189;
        }
        v localv1 = this.b[i1].f();
        do
        {
          if (localv1 == null) {
            break;
          }
          e locale1 = (e)localv1.c();
          this.j.a(locale1, i2++);
          this.a.a(locale1, localv1);
          localv1 = localv1.a();
          if (bool2) {
            break label169;
          }
          if (bool1) {
            break label167;
          }
        } while (!bool1);
        if (!bool2) {
          i1++;
        }
      } while (!bool1);
    } while (bool2);
    i1 = 0;
    label189:
    label211:
    do
    {
      do
      {
        if (i1 >= this.b.length) {
          break;
        }
        this.l[i1] = new d_[this.b[i1].size() * 2];
        i1++;
        if (bool2) {
          break label234;
        }
        if (bool1) {
          break label233;
        }
      } while (!bool1);
    } while (bool2);
    i1 = 0;
    label233:
    label234:
    label492:
    do
    {
      if (i1 >= this.h.a()) {
        break;
      }
      i2 = 1;
      int i3 = 0;
      int i4 = 0;
      v localv2 = this.b[i1].f();
      do
      {
        if (localv2 == null) {
          break label492;
        }
        e locale2 = (e)localv2.c();
        if (bool1) {
          break;
        }
        Object localObject = this.i.a(locale2).b();
        do
        {
          if (localObject == null) {
            break;
          }
          a.c.d locald = (a.c.d)((v)localObject).c();
          int i5 = this.j.getInt(locald.a(locale2));
          y localy = this.i.a(locald);
          if (bool1) {
            break label443;
          }
          if (localy.l())
          {
            if (!bool2)
            {
              if (i5 >= i2)
              {
                i3++;
                if (bool2) {
                  continue;
                }
                if (!bool1) {}
              }
              else
              {
                i3--;
              }
            }
            else
            {
              if (bool2) {
                continue;
              }
              if (!bool1) {}
            }
          }
          else
          {
            if (!bool2)
            {
              if (i5 >= i2) {
                i4++;
              }
            }
            else
            {
              if (bool2) {
                continue;
              }
              if (!bool1) {
                break label425;
              }
            }
            i4--;
          }
          localObject = ((v)localObject).a();
        } while (!bool1);
        if ((!bool2) && (i3 <= 0))
        {
          if (bool2) {
            continue;
          }
          if (i4 <= 0) {}
        }
        else
        {
          localObject = c(i1, i2);
          ((d_)localObject).o = i3;
          ((d_)localObject).p = i4;
        }
        localv2 = localv2.a();
        i2++;
      } while (!bool1);
      i1++;
    } while (!bool1);
    label425:
    label443:
    return;
  }
  
  private void a(int paramInt, a.c.d paramd)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    int i1 = this.j.getInt(paramd.e());
    int i2 = this.j.getInt(paramd.f());
    if (!bool2) {
      if (i1 < i2)
      {
        i3 = i1 + 1;
        i4 = i2;
        if (bool2) {
          break label89;
        }
        if (!bool1) {
          break label74;
        }
      }
    }
    int i3 = i2 + 1;
    int i4 = i1;
    label74:
    label89:
    if (!bool2) {
      if (this.i.a(paramd).l())
      {
        i5 = i3;
        do
        {
          if (i5 > i4) {
            break;
          }
          c(paramInt, i5).o += 1;
          i5++;
        } while (!bool1);
      }
    }
    int i5 = i3;
    while (bool2) {
      while (!bool1)
      {
        if (i5 > i4) {
          break;
        }
        c(paramInt, i5).p += 1;
        i5++;
      }
    }
  }
  
  private void a(d_ paramd_)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    int i1 = paramd_.q;
    int i2 = 0;
    int i5 = this.b[i1].size();
    if (!bool2) {
      if (paramd_.s == null)
      {
        i3 = paramd_.r;
        i4 = paramd_.r + 1;
        if (bool2) {
          break label79;
        }
        if (!bool1) {
          break label78;
        }
      }
    }
    int i3 = paramd_.r;
    int i4 = paramd_.r + 1;
    label78:
    label79:
    int i6 = 0;
    int i7 = 0;
    v localv = this.b[i1].f();
    int i8 = 0;
    do
    {
      do
      {
        if (i8 >= i3) {
          break;
        }
        localv = localv.a();
        i8++;
        if (bool2) {
          break label141;
        }
        if (bool1) {
          break label139;
        }
      } while (!bool1);
    } while (bool2);
    i8 = i3;
    label139:
    label141:
    d_ locald_;
    e locale;
    int i9;
    do
    {
      do
      {
        if (i8 < i2) {
          break;
        }
        locald_ = c(i1, i8);
        locale = (e)localv.c();
        if (bool1) {
          break label339;
        }
        if (locale != paramd_.s)
        {
          i6 += locale.d();
          i7 += locale.e();
        }
        i9 = paramd_.v + Math.min(i6, i7);
        a(paramd_, locald_, i9);
        i8--;
        localv = localv.b();
      } while (!bool1);
      i6 = 0;
      i7 = 0;
      localv = this.b[paramd_.q].f();
    } while (bool2);
    i8 = 0;
    do
    {
      do
      {
        if (i8 >= i4 - 1) {
          break;
        }
        localv = localv.a();
        i8++;
        if (bool2) {
          break label309;
        }
        if (bool1) {
          break label307;
        }
      } while (!bool1);
    } while (bool2);
    i8 = i4;
    label307:
    label309:
    label339:
    do
    {
      if (i8 > i5) {
        break;
      }
      locald_ = c(i1, i8);
      locale = (e)localv.c();
      if (locale != paramd_.s)
      {
        i6 += locale.d();
        i7 += locale.e();
      }
      i9 = paramd_.v + Math.min(i6, i7);
      a(paramd_, locald_, i9);
      i8++;
      localv = localv.a();
    } while (!bool1);
  }
  
  private void a(e parame, List paramList, int paramInt)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    int i1 = 0;
    Object localObject2;
    Object localObject3;
    Object localObject4;
    label167:
    int i6;
    if (!bool2)
    {
      if (this.b[paramInt].size() + 1 < paramList.size())
      {
        i2 = 2147483647;
        i1 = -1;
        int i4 = 0;
        label287:
        label289:
        do
        {
          do
          {
            if (i4 >= this.b[paramInt].size() + 1) {
              break label695;
            }
            this.f += 1;
            localObject2 = new ArrayList(paramList.size());
            if (bool1) {
              return;
            }
            d_ locald_;
            do
            {
              localObject3 = paramList.iterator();
              do
              {
                if (!((Iterator)localObject3).hasNext()) {
                  break label167;
                }
                a.c.d locald = (a.c.d)((Iterator)localObject3).next();
                localObject4 = locald.a(parame);
                locald_ = a(locald, (e)localObject4);
                ((List)localObject2).add(locald_);
                if ((!bool2) && (bool1)) {
                  break;
                }
              } while (!bool1);
              localObject3 = c(paramInt, i4);
              b((d_)localObject3, 0);
              a(paramList.size());
              i6 = 0;
            } while (bool2);
            localObject4 = ((List)localObject2).iterator();
            do
            {
              if (!((Iterator)localObject4).hasNext()) {
                break;
              }
              locald_ = (d_)((Iterator)localObject4).next();
              i6 += locald_.v;
              if (bool2) {
                break label289;
              }
              if (bool1) {
                break label287;
              }
            } while (!bool1);
            if (bool2) {
              break;
            }
          } while (bool2);
          if (i6 < i2)
          {
            i2 = i6;
            i1 = i4;
          }
          i4++;
        } while (!bool1);
      }
      this.f += 1;
    }
    int i2 = 0;
    Object localObject1;
    do
    {
      if (i2 >= this.b[paramInt].size() + 1) {
        break;
      }
      localObject1 = c(paramInt, i2);
      ((d_)localObject1).m = 24;
      ((d_)localObject1).w = 0;
      i2++;
      if (bool2) {
        break label624;
      }
      if (bool1) {
        break label623;
      }
    } while (!bool1);
    label374:
    int i3;
    if (!bool2)
    {
      Iterator localIterator = paramList.iterator();
      break label541;
      if (localIterator.hasNext()) {}
      label538:
      label539:
      label541:
      while (bool2)
      {
        localObject1 = (a.c.d)localIterator.next();
        localObject2 = ((a.c.d)localObject1).a(parame);
        localObject3 = c((a.c.d)localObject1, (e)localObject2);
        if (!bool2) {}
        ((d_)localObject3).m = (paramInt < ((d_)localObject3).q ? 1 : 2);
        b((d_)localObject3, 0);
        a(this.b[paramInt].size() + 1);
        i6 = 0;
        if (i6 < this.b[paramInt].size() + 1) {}
        while (bool2)
        {
          localObject4 = c(paramInt, i6);
          localObject4.w += ((d_)localObject4).v;
          i6++;
          if (bool2) {
            break label539;
          }
          if (bool1) {
            break label538;
          }
          if (!bool1) {
            break;
          }
        }
        this.f += 1;
        i6 = 0;
        if (i6 >= this.b[paramInt].size() + 1) {
          break label374;
        }
        localObject4 = c(paramInt, i6);
        if ((bool2) || ((!bool2) && (bool1))) {
          break label618;
        }
        ((d_)localObject4).m = 24;
        i6++;
        if ((!bool2) && ((!bool1) && (!bool1))) {
          break;
        }
      }
      label618:
      i3 = c(paramInt, i1).w;
    }
    label623:
    label624:
    int i5 = 1;
    if (i5 < this.b[paramInt].size() + 1) {}
    label695:
    while (bool2)
    {
      localObject2 = c(paramInt, i5);
      if ((!bool2) && (bool1)) {
        return;
      }
      if (!bool2)
      {
        if (((d_)localObject2).w < i3)
        {
          i3 = ((d_)localObject2).w;
          i1 = i5;
        }
        i5++;
      }
      if (!bool1) {
        break;
      }
    }
    a(parame, paramInt, i1, paramList);
  }
  
  private void a(e parame, List paramList, int paramInt1, int paramInt2)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    if (!bool2)
    {
      if (paramList != null)
      {
        if (bool2) {
          break label63;
        }
        if (paramList.size() >= 1) {}
      }
      else
      {
        this.c.e(parame);
        a(parame, paramInt1, this.b[paramInt1].size() + 1);
      }
    }
    else {
      return;
    }
    label63:
    if (!bool2)
    {
      if (paramInt1 == paramInt2)
      {
        a(parame, paramList, paramInt1);
        if ((!bool2) && (!bool1)) {
          return;
        }
      }
      if (bool2) {}
    }
    else if (paramInt1 > paramInt2)
    {
      a(parame, paramList, paramInt2, paramInt1);
      if ((!bool2) && (!bool1)) {
        return;
      }
    }
    int i1 = 0;
    int i2 = 0;
    int i3 = paramInt1;
    do
    {
      do
      {
        if (i3 > paramInt2) {
          break;
        }
        i1 = Math.max(i1, this.b[i3].size() + 1);
        i2 += this.b[i3].size() + 1;
        if (bool1) {
          break label259;
        }
        int i4 = 0;
        if (i4 < this.b[i3].size() + 1)
        {
          c(i3, i4).w = 0;
          i4++;
        }
        for (;;)
        {
          if (!bool2) {
            if (!bool1)
            {
              if (!bool1) {
                break;
              }
              if (bool2) {
                continue;
              }
              i3++;
            }
          }
        }
      } while (!bool1);
      i3 = paramList.size() + 1;
    } while (bool2);
    label259:
    int i5 = paramInt2 - paramInt1 + 1;
    int i6 = 1 * i3 * i5;
    int i7 = i6 * i3 * i5;
    int i8 = i5 * i3 * i7;
    this.f += 1;
    int[] arrayOfInt = new int[paramInt2 - paramInt1 + 1];
    Iterator localIterator = paramList.iterator();
    a.c.d locald;
    e locale;
    int i14;
    int i15;
    label451:
    int i16;
    int i17;
    label644:
    label649:
    do
    {
      if (localIterator.hasNext())
      {
        locald = (a.c.d)localIterator.next();
        locale = locald.a(parame);
        int i12 = this.i.a(locale).h();
        i14 = locale == locald.e() ? 1 : 0;
        if (!bool2) {}
        do
        {
          i15 = i14 != 0 ? i12 + 1 : i12 - 1;
          if (!bool2)
          {
            if (i15 < paramInt1)
            {
              i15 = paramInt1 - 1;
              if (bool2) {
                break label451;
              }
              if (!bool1) {}
            }
            else
            {
              if (bool2) {
                break label451;
              }
            }
          }
          else if (i15 > paramInt2) {
            i15 = paramInt2 + 1;
          }
          i16 = paramInt1;
          if (i16 > paramInt2) {
            break;
          }
          i17 = i16 - i15;
          if ((bool2) || ((!bool2) && (bool1))) {
            break label672;
          }
        } while (bool1);
        if (i16 == i12)
        {
          arrayOfInt[(i16 - paramInt1)] += i6;
          if (bool2) {
            break label649;
          }
          if (!bool1) {}
        }
        else
        {
          if (!bool2) {
            if (i17 < 0)
            {
              if (!bool2)
              {
                if (i14 != 0)
                {
                  arrayOfInt[(i16 - paramInt1)] -= i17 - i7;
                  if (bool2) {
                    break label649;
                  }
                  if (!bool1) {
                    break label644;
                  }
                }
                arrayOfInt[(i16 - paramInt1)] -= i17 * 1;
              }
              if (bool2) {
                break label649;
              }
              if (!bool1) {
                break label644;
              }
            }
          }
          if (bool2) {
            break label649;
          }
          if (i17 > 0)
          {
            if (!bool2)
            {
              if (i14 != 0) {
                arrayOfInt[(i16 - paramInt1)] += i17 * 1;
              }
            }
            else
            {
              if (bool2) {
                break label649;
              }
              if (!bool1) {
                break label644;
              }
            }
            arrayOfInt[(i16 - paramInt1)] += i17 + i7;
          }
        }
        i16++;
        if (!bool1) {
          break;
        }
      }
    } while (bool2);
    localIterator = paramList.iterator();
    label672:
    label812:
    label887:
    label889:
    do
    {
      do
      {
        if (!localIterator.hasNext()) {
          break;
        }
        break label980;
        break label976;
        locald = (a.c.d)localIterator.next();
        locale = locald.a(parame);
        d_ locald_1 = c(locald, locale);
        i14 = locald_1.q;
        if (bool1) {
          break label1238;
        }
        i15 = paramInt1;
        do
        {
          do
          {
            if (i15 > paramInt2) {
              break;
            }
            if (bool1) {
              break label900;
            }
            if (i15 == paramInt1)
            {
              if (bool2) {
                break label775;
              }
              if (i14 >= paramInt1) {}
            }
            else if (!bool2)
            {
              if (i15 != paramInt2) {
                break label778;
              }
              if (bool2) {
                break label775;
              }
            }
            i16 = i14 <= paramInt2 ? 8 : 0;
            if (!bool2) {
              if (bool2) {
                break label812;
              }
            }
            i17 = (byte)(i15 < i14 ? 17 : i15 > i14 ? 18 : 24);
            int i18 = 0;
            do
            {
              if (i18 >= this.b[i15].size() + 1) {
                break;
              }
              d_ locald_4 = c(i15, i18);
              locald_4.m = ((byte)(i17 | i16));
              i18++;
              if (bool2) {
                break label889;
              }
              if (bool1) {
                break label887;
              }
            } while (!bool1);
            if (!bool2) {
              i15++;
            }
          } while (!bool1);
        } while (bool2);
        if (i14 < paramInt1)
        {
          locald_1.m = 2;
          if (bool2) {
            break label970;
          }
          if (!bool1) {}
        }
        else
        {
          if (!bool2)
          {
            if (i14 > paramInt2) {
              locald_1.m = 1;
            }
          }
          else
          {
            if (bool2) {
              break label970;
            }
            if (!bool1) {
              break label954;
            }
          }
          locald_1.m = 7;
        }
        b(locald_1, 0);
        a(i2);
        i15 = paramInt1;
        do
        {
          if (i15 > paramInt2) {
            break label1211;
          }
          if (bool1) {
            break label672;
          }
          i16 = 0;
          do
          {
            do
            {
              if (i16 >= this.b[i15].size() + 1) {
                break label1198;
              }
              d_ locald_3 = c(i15, i16);
              if (bool1) {
                break;
              }
              if (locald_3.v == 2147483647)
              {
                locald_3.w = 2147483647;
                if (bool2) {
                  continue;
                }
                if (!bool1) {}
              }
              else
              {
                if (bool2) {
                  continue;
                }
                if (locald_3.w < 2147483647)
                {
                  if (!bool2) {
                    if (locald_3.q == i14) {
                      if (!bool2)
                      {
                        if (locald_3.r < locald_1.r)
                        {
                          if (bool2) {
                            break label1187;
                          }
                          locald_3.w += (locald_1.r - locald_3.r) * 1;
                          if (!bool1) {}
                        }
                        else
                        {
                          if (bool2) {
                            break label1174;
                          }
                        }
                      }
                      else if (locald_3.r > locald_1.r + 1) {
                        locald_3.w += (locald_3.r - (locald_1.r + 1)) * 1;
                      }
                    }
                  }
                  locald_3.w += locald_3.v * i8;
                }
              }
              i16++;
            } while (!bool1);
            i15++;
          } while (bool2);
        } while (!bool1);
        this.f += 1;
      } while (bool2);
    } while (!bool1);
    label775:
    label778:
    label954:
    label970:
    label976:
    label980:
    if (!bool2)
    {
      label1238:
      int i9 = 2147483647;
      int i10 = 0;
      int i11 = 0;
      int i13 = paramInt1;
      do
      {
        if (i13 > paramInt2) {
          break;
        }
        i14 = 0;
        do
        {
          do
          {
            if (i14 >= this.b[i13].size() + 1) {
              break label1356;
            }
            d_ locald_2 = c(i13, i14);
            if (bool1) {
              break;
            }
            if (locald_2.w < 2147483647)
            {
              locald_2.w += arrayOfInt[(i13 - paramInt1)];
              if (bool2) {
                continue;
              }
              if (locald_2.w < i9)
              {
                i9 = locald_2.w;
                i10 = i14;
                i11 = i13;
              }
            }
            i14++;
          } while (!bool1);
          i13++;
        } while (bool2);
      } while (!bool1);
      a(parame, i11, i10, paramList);
    }
    label900:
    label1174:
    label1187:
    label1198:
    label1211:
    label1356:
    return;
  }
  
  private void a(e parame, int paramInt1, int paramInt2, List paramList)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    this.c.e(parame);
    this.h.a(paramInt1).a(parame);
    a(parame, paramInt1, paramInt2);
    HashMap localHashMap = new HashMap();
    this.f += 1;
    d_ locald_1 = c(null, parame);
    b(locald_1, 0);
    locald_1.m = 3;
    int i1 = 0;
    Object localObject1 = paramList.iterator();
    Object localObject3;
    d_ locald_2;
    do
    {
      do
      {
        if (!((Iterator)localObject1).hasNext()) {
          break;
        }
        localObject2 = (a.c.d)((Iterator)localObject1).next();
        localObject3 = ((a.c.d)localObject2).a(parame);
      } while (this.i.a((e)localObject3).h() == paramInt1);
      locald_2 = a((a.c.d)localObject2, (e)localObject3);
      i1++;
      localHashMap.put(localObject3, locald_2);
      if (bool2) {
        break label196;
      }
      if ((!bool2) && (bool1)) {
        break label206;
      }
    } while ((!bool2) && (!bool1));
    if (i1 > 0) {
      label196:
      a(i1);
    }
    label206:
    localObject1 = new c_(parame, paramInt1, localHashMap);
    l.a(paramList, (Comparator)localObject1);
    Object localObject2 = paramList.iterator();
    label319:
    label321:
    do
    {
      do
      {
        if (!((Iterator)localObject2).hasNext()) {
          return;
        }
        localObject3 = (a.c.d)((Iterator)localObject2).next();
        locald_2 = (d_)localHashMap.get(((a.c.d)localObject3).a(parame));
        if (bool2) {
          break label319;
        }
        if (locald_2 == null) {
          break;
        }
        z localz = b(locald_2);
        a((a.c.d)localObject3, localz);
        if (bool2) {
          break label321;
        }
      } while (!bool1);
      a((a.c.d)localObject3, null);
    } while (!bool1);
  }
  
  private void a(a.c.d paramd)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    Object localObject = this.k.get(paramd);
    if ((bool2) || ((this.c.h(paramd.e())) && (this.c.h(paramd.f()))))
    {
      e locale1 = paramd.e();
      e locale2 = paramd.f();
      int i1 = this.i.a(locale2).h() - this.i.a(locale1).h();
      z localz;
      if (!bool2)
      {
        if (i1 > 1)
        {
          localz = a(paramd, locale1, locale2);
          a(paramd, localz);
          if ((!bool2) && (!bool1)) {
            return;
          }
        }
        if (bool2) {}
      }
      else if (i1 == 1)
      {
        this.m.a(paramd);
        if ((!bool2) && (!bool1)) {
          return;
        }
      }
      if (!bool2) {
        if (i1 == 0)
        {
          this.m.a(paramd);
          if ((!bool2) && (!bool1)) {
            return;
          }
        }
      }
      if (!bool2) {
        if (i1 == -1) {
          this.m.a(paramd);
        }
      }
      if ((bool2) || ((bool1) && (i1 < 0)))
      {
        localz = a(paramd, locale2, locale1);
        a(paramd, localz);
      }
    }
  }
  
  private void a(a.c.d paramd, z paramz)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    ab localab = this.m.a(paramd);
    if ((bool2) || (localab != null))
    {
      v localv1 = paramz.g();
      v localv2 = localab.g();
      do
      {
        if (localv2 == localab.f()) {
          break;
        }
        e locale = ((a.c.d)localv2.c()).e();
        d_ locald_ = (d_)localv1.c();
        a(locale, locald_.q, locald_.r);
        localv2 = localv2.b();
        localv1 = localv1.b();
      } while (!bool1);
    }
  }
  
  private z a(a.c.d paramd, e parame, int paramInt)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    this.f += 1;
    d_ locald_1 = c(paramd, parame);
    b(locald_1, 0);
    int i1 = 0;
    if (i1 < this.b[paramInt].size() + 1) {}
    while (bool2)
    {
      d_ locald_3 = c(paramInt, i1);
      if (bool2) {
        break label123;
      }
      locald_3.m = 24;
      i1++;
      if (bool1) {
        break label118;
      }
      if (!bool1) {
        break;
      }
    }
    if (!bool2) {}
    locald_1.m = (locald_1.q < paramInt ? 2 : 1);
    label118:
    label123:
    d_ locald_2 = a(1);
    return b(locald_2);
  }
  
  private z a(a.c.d paramd, e parame1, e parame2)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    this.f += 1;
    d_ locald_1 = c(paramd, parame1);
    d_ locald_2 = a(paramd, parame2);
    int i1 = locald_2.q;
    int i2 = 0;
    if (i2 < this.b[i1].size() + 1)
    {
      if (bool2) {}
    }
    else
    {
      while (bool2)
      {
        d_ locald_3 = c(i1, i2);
        locald_3.m = 8;
        i2++;
        if (bool1) {
          break label142;
        }
        if (!bool1) {
          break;
        }
      }
      if (!bool2) {}
      locald_1.m = (i1 < locald_1.q ? 1 : 2);
      b(locald_1, 0);
      a(1);
    }
    label142:
    return b(locald_2);
  }
  
  private void a(e parame) {}
  
  private void a(e parame, int paramInt1, int paramInt2)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    bb localbb = this.b[paramInt1];
    int i1 = localbb.size();
    if (!bool2) {
      if (this.l[paramInt1].length < localbb.size() + 2) {
        a(paramInt1, localbb.size() + 2);
      }
    }
    d_[] arrayOfd_ = this.l[paramInt1];
    if (!bool2)
    {
      if (paramInt2 >= i1)
      {
        this.a.a(parame, localbb.b(parame));
        this.j.a(parame, i1);
      }
    }
    else if (!bool1) {
      return;
    }
    v localv = localbb.g();
    do
    {
      do
      {
        if (paramInt2 >= i1) {
          break;
        }
        if (bool2) {
          break label264;
        }
        this.j.a(localv.c(), i1);
        if (bool1) {
          break label260;
        }
        if (!bool2)
        {
          if ((i1 > 0) && ((bool2) || (arrayOfd_[(i1 - 1)] != null)))
          {
            d_ locald_1 = arrayOfd_[(i1 - 1)];
            d_ locald_2 = c(paramInt1, i1);
            locald_2.o = locald_1.o;
            locald_2.p = locald_1.p;
          }
          i1--;
          localv = localv.b();
        }
      } while (!bool1);
    } while (bool2);
    if (localv == null)
    {
      if (bool2) {
        break label279;
      }
      this.a.a(parame, localbb.a(parame));
      if (!bool1) {}
    }
    else
    {
      label260:
      label264:
      this.a.a(parame, localbb.b(parame, localv));
    }
    label279:
    this.j.a(parame, paramInt2);
  }
  
  private d_ a(a.c.d paramd, e parame)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    int i1 = this.i.a(parame).h();
    int i2 = this.b[i1].size() + 1;
    d_[] arrayOfd_ = this.l[i1];
    do
    {
      do
      {
        if (i2 >= arrayOfd_.length) {
          break;
        }
        if (bool1) {
          break label253;
        }
        if (arrayOfd_[i2] == null) {
          break;
        }
        if (bool2) {
          break label106;
        }
        if (arrayOfd_[i2].l != this.f) {
          break;
        }
        i2++;
      } while (!bool1);
    } while (bool2);
    if (i2 < arrayOfd_.length) {
      label106:
      if ((bool2) || (arrayOfd_[i2] != null))
      {
        locald_ = arrayOfd_[i2];
        locald_.a();
        locald_.s = parame;
        locald_.l = this.f;
        locald_.q = i1;
        locald_.r = this.j.getInt(parame);
        locald_.v = 2147483647;
        if (!bool2)
        {
          locald_.m = 24;
          if ((paramd != null) && (this.n)) {
            locald_.t = (paramd.e() == parame ? this.i.a(paramd).d() : this.i.a(paramd).f());
          }
        }
        return locald_;
      }
    }
    label253:
    d_ locald_ = c(null, parame);
    locald_.l = this.f;
    locald_.v = 2147483647;
    locald_.m = 24;
    if (!bool2)
    {
      if (i2 >= arrayOfd_.length) {
        a(i1, i2 + 3);
      }
      if (!bool2) {
        this.l[i1][i2] = locald_;
      }
    }
    else
    {
      if (paramd == null) {
        break label373;
      }
    }
    if (this.n) {
      locald_.t = (paramd.e() == parame ? this.i.a(paramd).d() : this.i.a(paramd).f());
    }
    label373:
    return locald_;
  }
  
  private void a(int paramInt1, int paramInt2)
  {
    d_[] arrayOfd_ = new d_[paramInt2 * 2];
    System.arraycopy(this.l[paramInt1], 0, arrayOfd_, 0, this.l[paramInt1].length);
    this.l[paramInt1] = arrayOfd_;
  }
  
  private z b(d_ paramd_)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    if (!bool2) {}
    int i1 = paramd_.q > paramd_.x.q ? 1 : 0;
    z localz = new z();
    if (!bool2) {
      if (paramd_.s == null)
      {
        if (!bool2) {
          if (paramd_.l != this.f) {
            throw new IllegalStateException();
          }
        }
        if (!bool2)
        {
          if (i1 != 0)
          {
            if (bool2) {
              break label109;
            }
            localz.a(paramd_);
          }
        }
        else {
          if (!bool1) {
            break label110;
          }
        }
        label109:
        localz.b(paramd_);
      }
    }
    label110:
    d_ locald_ = paramd_.x;
    while ((locald_ != null) && ((bool2) || (locald_.x != null)))
    {
      if (!bool2) {
        if (locald_.l != this.f) {
          throw new IllegalStateException();
        }
      }
      if (locald_.s != null) {
        throw new IllegalStateException();
      }
      if (!bool2)
      {
        if (i1 != 0) {
          localz.a(locald_);
        }
      }
      else
      {
        if (bool2) {
          break label220;
        }
        if (!bool1) {
          break label208;
        }
      }
      localz.b(locald_);
      label208:
      locald_ = locald_.x;
      label220:
      if (locald_.l != this.f) {
        throw new IllegalStateException();
      }
    }
    return localz;
  }
  
  private d_ a(int paramInt)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    do
    {
      d_ locald_;
      do
      {
        do
        {
          if (b()) {
            break;
          }
          locald_ = c();
          if (!bool2) {
            if ((locald_.m & 0x10) == 16)
            {
              paramInt--;
              if (bool2) {
                continue;
              }
              if (paramInt <= 0)
              {
                this.e.f();
                return locald_;
              }
            }
          }
        } while ((!bool2) && ((locald_.m & 0x8) == 8));
        if (!bool2) {
          if ((locald_.m & 0x4) == 4) {
            a(locald_);
          }
        }
        if (!bool2) {
          if ((locald_.m & 0x2) == 2) {
            a(locald_, locald_.q + 1);
          }
        }
      } while ((locald_.m & 0x1) != 1);
      a(locald_, locald_.q - 1);
      if (bool2) {
        break label170;
      }
      if ((!bool2) && (bool1)) {
        break label205;
      }
    } while ((!bool2) && (!bool1));
    if (paramInt > 0) {
      label170:
      throw new IllegalStateException("Could not find route to " + paramInt + " items!");
    }
    label205:
    return null;
  }
  
  private int a(d_ paramd_1, d_ paramd_2)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    if (!bool2) {}
    int i1 = paramd_2.q < paramd_1.q ? 1 : 0;
    int i2 = 0;
    int i3 = paramd_1.r;
    int i4 = 0;
    int i5 = 0;
    v localv = this.b[paramd_2.q].f();
    a.c.d locald;
    label226:
    label246:
    do
    {
      do
      {
        do
        {
          if (localv.c() == paramd_2.s) {
            break label246;
          }
          if (bool1) {
            break label255;
          }
          if (i1 != 0)
          {
            locald = ((e)localv.c()).h();
            do
            {
              if (locald == null) {
                break;
              }
              if (bool1) {
                break label559;
              }
              if (this.j.getInt(locald.f()) < i3)
              {
                i4++;
                i5--;
                if (bool2) {
                  continue;
                }
                if (!bool1) {}
              }
              else
              {
                i5++;
              }
              locald = locald.i();
            } while (!bool1);
          }
        } while (bool2);
        locald = ((e)localv.c()).i();
        if (locald != null) {}
        do
        {
          if (bool1) {
            break label559;
          }
          if (this.j.getInt(locald.e()) < i3)
          {
            i4++;
            i5--;
            if (bool2) {
              break label226;
            }
            if (!bool1) {}
          }
          else
          {
            i5++;
          }
          locald = locald.j();
          if (!bool1) {
            break;
          }
          localv = localv.a();
        } while (bool2);
      } while (!bool1);
    } while (bool2);
    if (this.n)
    {
      label255:
      int i6;
      if (i1 != 0)
      {
        locald = ((e)localv.c()).h();
        do
        {
          if (locald == null) {
            break;
          }
          i6 = a(locald.e(), locald, paramd_1.r, paramd_2.t);
          if (bool1) {
            break label558;
          }
          if (i6 != 0) {
            i4++;
          }
          locald = locald.i();
        } while (!bool1);
      }
      if (!bool2)
      {
        locald = ((e)localv.c()).i();
        do
        {
          if (locald == null) {
            break;
          }
          i6 = a(locald.f(), locald, paramd_1.r, paramd_2.t);
          if (bool1) {
            break label558;
          }
          if (i6 != 0) {
            i4++;
          }
          locald = locald.j();
        } while (!bool1);
      }
    }
    else
    {
      localv = localv.a();
      if (localv == null) {
        break label548;
      }
    }
    label548:
    while (bool2)
    {
      if (bool1) {
        break label558;
      }
      if (i1 != 0) {}
      while (bool2)
      {
        locald = ((e)localv.c()).h();
        do
        {
          if (locald == null) {
            break;
          }
          if (bool1) {
            break label559;
          }
          if (this.j.getInt(locald.f()) < i3) {
            i4++;
          }
          locald = locald.i();
        } while (!bool1);
      }
      locald = ((e)localv.c()).i();
      if (locald != null) {}
      do
      {
        if (bool1) {
          break label559;
        }
        if (this.j.getInt(locald.e()) < i3) {
          i4++;
        }
        locald = locald.j();
        if (!bool1) {
          break;
        }
        localv = localv.a();
      } while (bool2);
      if (!bool1) {
        break;
      }
    }
    label558:
    label559:
    return i4 + i5 + (i1 != 0 ? paramd_1.o : paramd_1.p);
  }
  
  private int a(e parame, a.c.d paramd, int paramInt, cd paramcd)
  {
    boolean bool = d.R;
    int i1 = parame == paramd.e() ? 1 : 0;
    int i2 = this.j.getInt(i1 != 0 ? paramd.f() : paramd.e());
    if (!bool) {}
    int i3 = paramInt == i2 ? -1 : paramInt - i2;
    cd localcd = i1 != 0 ? this.i.a(paramd).d() : this.i.a(paramd).f();
    int i5;
    int i4 = i5 = 0;
    int i6 = i5 - i4;
    if (!bool) {
      if (i6 != 0)
      {
        if (!bool) {
          if (bool) {}
        }
        if (!bool) {}
        return i3 < 0 ? 0 : i6 > 0 ? -1 : i3 > 0 ? 0 : 1;
      }
    }
    return 0;
  }
  
  private void a(d_ paramd_, int paramInt)
  {
    boolean bool2 = d.R;
    boolean bool1 = d.Q;
    if ((bool2) || (paramInt >= 0))
    {
      if (bool2) {
        break label44;
      }
      if (paramInt < this.l.length) {}
    }
    else
    {
      return;
    }
    if (!bool2) {}
    label44:
    int i1 = paramInt < paramd_.q ? 1 : 0;
    int i2 = 0;
    int i3 = paramd_.r;
    c(paramInt, i2).u = 0;
    i2++;
    int i4 = 0;
    int i5 = 0;
    v localv = this.b[paramInt].f();
    if (localv != null) {}
    label252:
    while (bool2)
    {
      if (bool1) {
        break label474;
      }
      if (i1 != 0) {}
      int i7;
      int i8;
      while (bool2)
      {
        locald = ((e)localv.c()).h();
        do
        {
          if (locald == null) {
            break;
          }
          i7 = this.j.getInt(locald.f()) - i3;
          if (bool1) {
            break label474;
          }
          if (i7 < 0)
          {
            i4++;
            i5--;
            if (bool2) {
              continue;
            }
            if (!bool1) {}
          }
          else
          {
            if (!bool2)
            {
              if ((i7 > 0) || (paramd_.s == null)) {
                i5++;
              }
            }
            else
            {
              if (bool2) {
                continue;
              }
              if (!bool1) {
                break label252;
              }
            }
            if (bool2) {
              continue;
            }
            if (this.n)
            {
              i8 = 0;
              if (!bool2) {
                if (i8 < 0)
                {
                  i4++;
                  i5--;
                  if (bool2) {
                    continue;
                  }
                  if (!bool1) {
                    break label252;
                  }
                }
              }
              if (bool2) {
                continue;
              }
              if (i8 > 0) {
                i5++;
              }
            }
          }
          locald = locald.i();
        } while (!bool1);
      }
      a.c.d locald = ((e)localv.c()).i();
      if (locald != null) {}
      do
      {
        i7 = this.j.getInt(locald.e()) - i3;
        if (bool1) {
          break label474;
        }
        if (i7 < 0)
        {
          i4++;
          i5--;
          if (bool2) {
            break label423;
          }
          if (!bool1) {}
        }
        else
        {
          if (!bool2)
          {
            if ((i7 > 0) || (paramd_.s == null)) {
              i5++;
            }
          }
          else
          {
            if (bool2) {
              break label423;
            }
            if (!bool1) {
              break label414;
            }
          }
          if (bool2) {
            break label423;
          }
          if (this.n)
          {
            i8 = 0;
            if (!bool2) {
              if (i8 < 0)
              {
                i4++;
                i5--;
                if (bool2) {
                  break label423;
                }
                if (!bool1) {
                  break label414;
                }
              }
            }
            if (bool2) {
              break label423;
            }
            if (i8 > 0) {
              i5++;
            }
          }
        }
        locald = locald.j();
        if (!bool1) {
          break;
        }
        c(paramInt, i2).u = i5;
        localv = localv.a();
        i2++;
      } while (bool2);
      if (!bool1) {
        break;
      }
    }
    label414:
    label423:
    label474:
    d_ locald_1 = this.b[paramInt].size() + 1;
    int i6 = 0;
    label592:
    do
    {
      if (i6 >= locald_1) {
        break;
      }
      if ((!bool2) && (bool1)) {
        break label601;
      }
      locald_2 = c(paramInt, i6);
      locald_2.u += i4;
      if (!bool2)
      {
        if (i1 != 0) {
          a(paramd_, locald_2, locald_2.u + paramd_.v + paramd_.o + locald_2.p);
        }
      }
      else
      {
        if (bool2) {
          continue;
        }
        if (!bool1) {
          break label592;
        }
      }
      a(paramd_, locald_2, locald_2.u + paramd_.v + paramd_.p + locald_2.o);
      i6++;
    } while (!bool1);
    label601:
    d_[] arrayOfd_ = this.l[paramInt];
    d_ locald_2 = locald_1;
    do
    {
      if ((locald_2 >= arrayOfd_.length) || ((!bool2) && (arrayOfd_[locald_2] == null)) || ((!bool2) && (arrayOfd_[locald_2].l != this.f))) {
        break;
      }
      d_ locald_3 = arrayOfd_[locald_2];
      int i9 = a(paramd_, locald_3);
      a(paramd_, locald_3, paramd_.v + i9);
      locald_2++;
    } while (!bool1);
  }
  
  private void a(d_ paramd_1, d_ paramd_2, int paramInt)
  {
    boolean bool = d.R;
    if (!bool) {
      if (c(paramd_2))
      {
        if (!bool)
        {
          if (paramInt >= paramd_2.v) {
            return;
          }
          c(paramd_2, paramInt);
          paramd_2.x = paramd_1;
        }
        if ((!bool) && (!d.Q)) {
          return;
        }
      }
    }
    if (!bool)
    {
      if (paramd_2.n == 2) {
        return;
      }
      b(paramd_2, paramInt);
      if (bool) {}
    }
    else if ((paramd_2.m & 0x3) == 3)
    {
      d_ tmp93_92 = paramd_2;
      tmp93_92.m = ((byte)(tmp93_92.m & 0xFFFFFFFC));
      int i1 = paramd_2.q - paramd_1.q;
      d_ tmp116_115 = paramd_2;
      if (!bool) {}
      if (!bool) {}
      tmp116_115.m = ((byte)(tmp116_115.m | (i1 > 0 ? 2 : i1 < 0 ? 1 : paramd_1.m & 0x3)));
    }
    paramd_2.x = paramd_1;
  }
  
  private final boolean b()
  {
    return this.e.d();
  }
  
  private final boolean c(d_ paramd_)
  {
    return this.e.a(paramd_);
  }
  
  private final d_ b(d_ paramd_, int paramInt)
  {
    this.e.a(paramd_, paramInt);
    paramd_.l = this.f;
    paramd_.n = 1;
    paramd_.v = paramInt;
    return paramd_;
  }
  
  private final d_ c(d_ paramd_, int paramInt)
  {
    paramd_.v = paramInt;
    this.e.b(paramd_, paramInt);
    return paramd_;
  }
  
  private final d_ c()
  {
    d_ locald_ = (d_)this.e.a();
    locald_.n = 2;
    return locald_;
  }
  
  private d_ c(int paramInt1, int paramInt2)
  {
    boolean bool = d.R;
    d_ locald_ = this.l[paramInt1][paramInt2];
    if (!bool) {
      if (locald_ == null)
      {
        locald_ = new d_();
        locald_.a();
        locald_.q = paramInt1;
        locald_.r = paramInt2;
        if (bool) {
          break label107;
        }
        locald_.l = this.f;
        this.l[paramInt1][paramInt2] = locald_;
        if (!d.Q) {
          return locald_;
        }
      }
    }
    if (!bool) {
      if (locald_.l != this.f)
      {
        locald_.a();
        locald_.r = paramInt2;
        locald_.l = this.f;
      }
    }
    label107:
    return locald_;
  }
  
  private d_ c(a.c.d paramd, e parame)
  {
    d_ locald_ = new d_();
    locald_.a();
    locald_.s = parame;
    locald_.r = this.j.getInt(parame);
    locald_.q = this.i.a(parame).h();
    if (!d.R)
    {
      locald_.l = this.f;
      if ((paramd != null) && (this.n)) {
        locald_.t = (paramd.e() == parame ? this.i.a(paramd).d() : this.i.a(paramd).f());
      }
    }
    return locald_;
  }
  
  public Object c(int paramInt)
  {
    return null;
  }
  
  public Object e(int paramInt)
  {
    return null;
  }
  
  public Object d(int paramInt1, int paramInt2)
  {
    return null;
  }
  
  public Object d()
  {
    return null;
  }
  
  public Object e()
  {
    return null;
  }
  
  final class c_
    implements Comparator
  {
    private final Map a = new HashMap();
    private final e b;
    private final Map c;
    private final int d;
    
    c_(e parame, int paramInt, Map paramMap)
    {
      this.c = paramMap;
      this.d = paramInt;
      this.b = parame;
    }
    
    public int compare(Object paramObject1, Object paramObject2)
    {
      boolean bool2 = d.R;
      boolean bool1 = d.Q;
      a.c.d locald1 = (a.c.d)paramObject1;
      a.c.d locald2 = (a.c.d)paramObject2;
      e locale1 = locald1.a(this.b);
      e locale2 = locald2.a(this.b);
      dd.d_ locald_1 = (dd.d_)this.c.get(locale1);
      dd.d_ locald_2 = (dd.d_)this.c.get(locale2);
      if (!bool2) {
        if (locald_1 == null)
        {
          if (locald_2 == null) {
            return 0;
          }
          return 1;
        }
      }
      if (!bool2) {
        if (locald_2 == null) {
          return -1;
        }
      }
      if (!bool2) {}
      int i = locald_1.q < this.d ? 1 : 0;
      if (!bool2) {}
      int j = locald_2.q < this.d ? 1 : 0;
      if ((bool2) || (j != i))
      {
        if (!bool2) {}
        return i != 0 ? -1 : 1;
      }
      int[] arrayOfInt1 = (int[])this.a.get(locald1);
      if (!bool2) {
        if (arrayOfInt1 == null) {
          this.a.put(locald1, arrayOfInt1 = a(locald1));
        }
      }
      int[] arrayOfInt2 = (int[])this.a.get(locald2);
      if ((bool2) || (arrayOfInt2 == null)) {
        this.a.put(locald2, arrayOfInt2 = a(locald2));
      }
      int k = 0;
      do
      {
        do
        {
          if (k >= arrayOfInt1.length) {
            break;
          }
          if (bool1) {
            break label332;
          }
          if (k >= arrayOfInt2.length) {
            break;
          }
          if (bool2) {
            break label331;
          }
          if (arrayOfInt1[k] != arrayOfInt2[k]) {
            break;
          }
          k++;
        } while (!bool1);
      } while (bool2);
      label331:
      if (k < arrayOfInt1.length)
      {
        label332:
        if (!bool2) {
          if (k < arrayOfInt2.length) {
            return l.a(arrayOfInt2[k], arrayOfInt1[k]);
          }
        }
        return 1;
      }
      if (!bool2) {
        if (k < arrayOfInt2.length) {
          return -1;
        }
      }
      return 0;
    }
    
    private final int[] a(a.c.d paramd)
    {
      boolean bool2 = d.R;
      boolean bool1 = d.Q;
      e locale = paramd.a(this.b);
      int i = Math.abs(dd.this.i.a(this.b).h() - dd.this.i.a(locale).h());
      int[] arrayOfInt = new int[i];
      dd.d_ locald_ = (dd.d_)this.c.get(paramd.a(this.b));
      int j = arrayOfInt.length - 1;
      do
      {
        while (!bool1)
        {
          if (locald_.x == null) {
            break;
          }
          if ((!bool2) && (bool1)) {
            break label147;
          }
          arrayOfInt[j] = locald_.r;
          locald_ = locald_.x;
          j--;
        }
      } while (bool2);
      label147:
      return arrayOfInt;
    }
  }
  
  static final class b_
    implements i, k
  {
    public Object get(Object paramObject)
    {
      return ((dd.d_)paramObject).y;
    }
    
    public boolean getBool(Object paramObject)
    {
      return false;
    }
    
    public double getDouble(Object paramObject)
    {
      return 0.0D;
    }
    
    public int getInt(Object paramObject)
    {
      return 0;
    }
    
    public void a(Object paramObject1, Object paramObject2)
    {
      ((dd.d_)paramObject1).y = paramObject2;
    }
    
    public void a(Object paramObject, boolean paramBoolean) {}
    
    public void a(Object paramObject, double paramDouble) {}
    
    public void a(Object paramObject, int paramInt) {}
  }
  
  static final class a_
  {
    static final int a = 1;
    static final int b = 2;
    int c;
  }
  
  static final class d_
  {
    static final byte a = 1;
    static final byte b = 2;
    static final byte c = 4;
    static final byte d = 3;
    static final byte f = 7;
    static final byte g = 8;
    static final byte h = 16;
    static final byte i = 0;
    static final byte j = 1;
    static final byte k = 2;
    int l;
    byte m = 3;
    byte n = 0;
    int o;
    int p;
    int q;
    int r;
    e s;
    cd t;
    int u;
    int v;
    int w;
    d_ x;
    Object y;
    
    public void a()
    {
      this.s = null;
      this.v = 2147483647;
      this.n = 0;
      this.x = null;
      this.m = 3;
      this.u = 0;
      this.t = null;
      this.y = null;
    }
    
    public String toString()
    {
      return "QueueItem [" + this.q + ":" + this.r + "] costs: " + this.v + " score: " + this.w;
    }
  }
}



/* Location:           E:\idea\

 * Qualified Name:     a.f.d.a.dd

 * JD-Core Version:    0.7.0.1

 */